﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

/// <summary>
/// Descripción de usuario que se registra en el sistema, con los atributos que se tienen en el formulario de registrarUsuario.aspx
/// </summary>
public class Usuario
{
    private string nombreUsuario;
    private string contrasena;
    private string nombre;
    private string apellido;
    private string email;
    private string telefonoFijo;
    private string telefonoCelular;
    private string RolPaginas_nombreRol;

    public bool ExisteUsuario(string nomUsuario)
    {
        BD bd = new BD();
        bd.AbrirConexion();
        DataTable dt = bd.Consultar("select * from Usuario WHERE nombreUsuario='"+nomUsuario+"'");
        if (dt.Rows.Count > 0)
            return true;
        else
            return false;
    }

    public string ActualizarUsuario()
    {
        BD bd = new BD();
        bd.AbrirConexion();
        string campos = string.Format("nombreUsuario='{0}',contrasena='{1}',nombre='{2}',apellido='{3}',email='{4}',telefonoFijo='{5}',telefonoCelular='{6}',RolPaginas_nombreRol='{7}'",
            nombreUsuario, contrasena, nombre, apellido, email, telefonoFijo, telefonoCelular, RolPaginas_nombreRol);
        string condicion = "nombreUsuario='" + nombreUsuario+"'";
        string actualizar = bd.Actualizar("Usuario", campos, condicion);
        bd.CerrarConexion();
        return actualizar;
    }

    public Usuario(string nombreUsuario, string contrasena, string email, string nombre, string apellido, string telefonoFijo, string telefonoCelular, string RolPaginas_nombreRol)
	{
        this.nombreUsuario = nombreUsuario;
        this.contrasena = contrasena;
        this.email = email;
        this.nombre = nombre;
        this.apellido = apellido;

        this.telefonoFijo = telefonoFijo;
        this.telefonoCelular = telefonoCelular;
        this.RolPaginas_nombreRol = RolPaginas_nombreRol;
	}

    public Usuario(string nombreUsuario, string contrasena, string email, string nombre, string apellido)
    {
        this.nombreUsuario = nombreUsuario;
        this.contrasena = contrasena;
        this.email = email;
        this.nombre = nombre;
        this.apellido = apellido;
    }

    public Usuario() 
    { 
    
    }

    public string ObtNombreUsuario()
    {
        return nombreUsuario;
    }

    public string ObtContrasena()
    {
        return contrasena;
    }

    public string ObtEmail()
    {
        return email;
    }

    public string ObtNombre() 
    {
        return nombre;
    }

    public string ObtApellido()
    {
        return apellido;
    }

    public string ObtTelefonoFijo()
    {
        return telefonoFijo;
    }

    public string ObtTelefonoCelular()
    {
        return telefonoCelular;
    }

    public string ObtRol()
    {
        return RolPaginas_nombreRol;
    }

    public string CrearUsuario()
    {
        BD bd = new BD();
        bd.AbrirConexion();
        string insert = bd.Insertar("Usuario", "(nombreUsuario,contrasena,email,nombre,apellido,telefonoFijo,telefonoCelular,RolPaginas_nombreRol)",
            "('" + nombreUsuario + "','" + contrasena + "','" + email + "','" + nombre + "','" + apellido + "','" + telefonoFijo + "','" + telefonoCelular + "','" + RolPaginas_nombreRol + "')");
        bd.CerrarConexion();
        return insert;
    }

    public List<Usuario> consultarUsuario()
    {
        BD bd = new BD();
        bd.AbrirConexion();
        List<Usuario> listusuario = new List<Usuario>();
        DataTable dt = bd.Consultar("select * from Usuario");
        int cont = 0;

        foreach (DataRow dr in dt.Rows)
        {
            Usuario usuario = new Usuario(dt.Rows[cont]["nombreUsuario"].ToString(), dt.Rows[cont]["contrasena"].ToString(),
            dt.Rows[cont]["email"].ToString(), dt.Rows[cont]["nombre"].ToString(), dt.Rows[cont]["apellido"].ToString(), dt.Rows[cont]["telefonoFijo"].ToString(), dt.Rows[cont]["telefonoCelular"].ToString(), dt.Rows[cont]["RolPaginas_nombreRol"].ToString());
            cont++;
            listusuario.Add(usuario);
        }
        bd.CerrarConexion();

        return listusuario;

    }

    public List<Usuario> ConsultarUsuariosPorRol(string rol)
    {
        BD bd = new BD();
        bd.AbrirConexion();
        List<Usuario> listusuario = new List<Usuario>();
        DataTable dt = bd.Consultar("select * from Usuario where RolPaginas_nombreRol='"+rol+"'");
        int cont = 0;

        foreach (DataRow dr in dt.Rows)
        {
            Usuario usuario = new Usuario(dt.Rows[cont]["nombreUsuario"].ToString(), dt.Rows[cont]["contrasena"].ToString(),
            dt.Rows[cont]["email"].ToString(), dt.Rows[cont]["nombre"].ToString(), dt.Rows[cont]["apellido"].ToString(), dt.Rows[cont]["telefonoFijo"].ToString(), dt.Rows[cont]["telefonoCelular"].ToString(), dt.Rows[cont]["RolPaginas_nombreRol"].ToString());
            cont++;
            listusuario.Add(usuario);
        }
        bd.CerrarConexion();

        return listusuario;

    }

    public void AsigNombreUsuario(string nombreUsuario)
    {
        this.nombreUsuario = nombreUsuario;
    }
    
    public Usuario BuscarUsuario(string nombreUsuario)
    {
        BD bd = new BD();
        bd.AbrirConexion();
        string consulta = "select * from Usuario where nombreUsuario='"+nombreUsuario+"'";
        DataTable dt = bd.Consultar(consulta);
        bd.CerrarConexion();

        if (dt.Rows.Count != 0)
        {
            DataRow dr = dt.Rows[0];
            this.nombre = dr["nombre"].ToString();
            this.apellido = dr["apellido"].ToString();
            this.contrasena = dr["contrasena"].ToString();
            this.email = dr["email"].ToString();
            this.nombreUsuario = dr["nombreUsuario"].ToString();
            this.RolPaginas_nombreRol = dr["RolPaginas_nombreRol"].ToString();
            this.telefonoCelular = dr["telefonoCelular"].ToString();
            this.telefonoFijo = dr["telefonoFijo"].ToString();
            return this;
        }
        return null;
    }
}
